#pragma once
/*****************************************
 * 
 * 该文件实现一个模板类，该类有两个元素：id 和 value
 * 当需要计算该类的 hash 值时，会用到 id 这个元素
 * 当需要比较两个类的大小时，会用到 value 这个元素
 * 
 *****************************************/
template <typename T>
struct HashPair
{
	int id;
	T value;

	HashPair(int id_in, T value_in) : id(id_in), value(value_in) {};

	HashPair(std::pair<const int, T>& p) : id(p.first), value(p.second) {};

	bool operator<(const HashPair<T>& other) const
	{
		return value < other.value;
	}

	bool operator>(const HashPair<T>& other) const
	{
		return value > other.value;
	}

	bool operator==(const HashPair<T>& other) const
	{
		return value == other.value;
	}
};
